package com.pi.shisan.common;

public class NumberUtil {

    /**
     * 返回数字某一位上的数字
     * @param num 原数字
     * @param x 从右往左数，个位为0，十位为1，百位为2，以此类推
     * @return 返回x指定的位数上的数字
     */
    public static int getSimpleNum(int num, int x) {
        for (int i = 0; i < x; i++) {
            num /= 10;
        }
        return num % 10;
    }

    /**
     * 将x,y坐标转为xy坐标
     * 仅支持有符号类型的Short最大值和最小值
     * @param x
     * @param y
     * @return
     */
    public static int toXy(short x, short y) {
        return (x & 0xFFFF) << 16 | (y & 0xFFFF);
    }


    /**
     * 将xy坐标转为x坐标
     * 仅支持有符号类型的Short最大值和最小值
     * @param xy
     * @return
     */
    public static short toX(int xy) {
        return (short)(xy >> 16);
    }

    /**
     * 将xy坐标转为y坐标
     * 仅支持有符号类型的Short最大值和最小值
     * @param xy
     * @return
     */
    public static short toY(int xy) {
        return (short)xy;
    }

    /**
     * 获取数字有多少位
     * @param num
     * @return
     */
    public static int getNumsOfNum(int num) {
        if (num == 0) {
            return 1;
        }
        num = Math.abs(num);
        int size = 0;
        while (num > 0) {
            num /= 10;
            size ++;
        }
        return size;
    }
}
